安卓模拟Linux环境APP:Termux 安装/使用/配置/python环境教程

实验验证时间:2019-11-16

Termux是一个Android下一个高级的终端模拟器,开源且不需要root,支持apt管理软件包,十分方便安装软件包,完美支持Python,PHP,Ruby,Go,Nodejs,MySQL等。

这篇主要是讲Python3。

官网:https://termux.com/

github:https://github.com/termux/termux-app

1. 安装方法,从官网进,如果能用Google Play的,就直接Google Play下载,不能的选右边的

termux_1

右边进入,推荐直接点这个链接https://f-droid.org/packages/com.termux/,进入自动切换成中文了,拉到下面,安装包,点下载APK,直接下载APK。(PS:假如是英文界面,右上角可以调语言,调完关闭再重新一次。)

termux_2

拖到安卓手机安装,这一步我的小米Max2用Google Play下载的话,安装完后会闪退,原因未知,直接APK下载的就ok。

推荐使用adb模式跟安卓手机发送或者拉取文件。

安装完毕后有个小技巧,打开后,长按屏幕会显示菜单项,(包括复制、粘贴、更多等)。

2. 授权访问手机本地文件权限

根据默认的 Android 系统的权限设定,Termux 是无法访问手机存储的。当然可以使用命令进行修改。
只需要输入 termux-setup-storage 命令,即会弹出授权窗口,允许即可。
该命令会在用户主目录下生成 storage 文件夹,里面即包含了到系统主要资源(如手机内存、外置存储卡、Downloads 文件夹、照片等)的链接。

termux_3

3. 电脑ssh连接Termux

在手机上输入命令真是麻烦,键盘太小了,通过电脑ssh直接操作就方便多了。

  • termux安装openssh

    1
    pkg install openssh
  • 安装完成后,sshd服务默认没有启动,所以得手动启动下:

    1
    sshd
  • 启动后,用命令看下是否在运行:

    1
    ps -ef | grep ssh
  • 因为手机上面低的端口有安全限制,所以这里的openssh默认的sshd默认的服务是8022端口上的.

    1
    netstat -an | grep 8082
  • 用命令查看当前用户名:

    1
    whoami
  • PC端生成公钥

    ssh登录是key公钥模式登录,首先在PC端生成秘钥,如果已经生成过的就不用了:

    1
    ssh-keygen -t rsa

    执行完成后,会在用户目录下创建.ssh文件夹,下面有3个文件,eg : C:\Users\用户名\.ssh
    id_rsa, id_rsa.pub , known_hosts

  • 拷贝公钥到手机

    pc拷贝公钥id_rsa.pub到手机,比如在手机新建个目录叫myFiles,用adb模式推送公钥到myFiles,

    1
    adb push id_rsa.pub /storage/emulated/0/myFiles
  • 打开termux,默认的目录是home

    1
    pwd
  • 查看是否已经生成.ssh文件夹,如果没有重新安装下openssh

    1
    ls -al
  • 找到之前pc推过来的公钥id_rsa.pub

    1
    cd /storage/shared/myFiles
  • 复制到.ssh文件夹

    1
    cd ~ && cd .ssh && cp /data/data/com.termux/files/home/storage/shared/myFiles/id_rsa.pub id_rsa.pub
  • 进入.ssh文件夹,检查是否有authorized_keys文件,如果没有,新建一个,

    1
    2
    3
    cd .ssh && ls
    # 如果没有authorized_keys文件,运行
    vi authorized_keys
  • 如果存在,把id_rsa.pub写入authorized_keys文件并删了

    1
    cat id_rsa.pub > authorized_keys && rm id_rsa.pub
  • pc端连接手机端termux,可以通过命令行连接,也可用通过其他工具,个人推荐MobaXterm

    1
    ssh -p8022 u0_a237@192.168.2.114

    假如连不上的话,查一下是不是ssh的服务被关了,建议长按屏幕,more,选择屏幕常亮。

4. 更换清华大学源,加快软件包下载速度

4.1. 设置默认编辑器,输完回车

1
export EDITOR=vi

4.2. 编辑源文件,输完回车

1
apt edit-sources

将原来的官方源替换为http://mirrors.tuna.tsinghua.edu.cn/termux

注意,这里只改后面的地址就行了,是http的。

这时候进入的是vim编辑器,具体怎么用vim编辑器,另外搜索用法

大概介绍一下,h键光标左移,j键光标下移,k键光标上移,l键光标右移,:wq保存退出。

4.3. 安装基本工具

1
2
3
pkg update
pkg upgrade
pkg install vim curl wget git unzip unrar

5. Python环境部署

5.1. 安装python3

1
pkg install python

安装完成后,使用python命令启动环境验证是否成功。

ps:这是个人情况,安装过程遇到需要预先安装依赖ncurses-ui-libs,要安装这个又要预先安装ncurses,而且要求版本6.1.20190511-7,但是ncurses之前已经安装了更高版本的,所以先降版本,即再安装一次但指定版本

1
2
pkg install ncurses=6.1.20190511-7
pkg install ncurses-ui-libs

查看已经pkg安装的包命令:

1
pkg list-installed

升级pip版本:

1
python -m pip install --upgrade pip

6. 管理员身份

6.1. 手机没有root

利用proot工具来模拟某些需要root的环境

1
pkg install proot

然后终端下面输入:

1
termux-chroot

即可模拟root环境
在这个proot环境下面,相当于是进入了home目录,可以很方便地进行一些配置.

在管理员身份下,输入exit可回到普通用户身份。

6.2. 手机已经root

安装tsu,这是一个su的termux版本,用来在termux上替代su:

1
pkg install tsu

然后终端下面输入:

1
tsu

即可切换root用户,这个时候会弹出root授权提示,给予其root权限,效果图如下:

在管理员身份下,输入exit可回到普通用户身份。

先切换管理员身份

https://wiki.termux.com/wiki/Instructions_for_installing_python_packages#opencv

1
LDFLAGS=" -llog -lpython3" cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_opencv_python3=on -DBUILD_opencv_python2=off -DWITH_QT=OFF -DWITH_GTK=OFF -DBUILD_JAVA=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DWITH_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF ..
1
LDFLAGS=" -llog -lpython3" cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_opencv_python3=on -DBUILD_opencv_python2=off -DWITH_QT=OFF -DWITH_GTK=OFF -DBUILD_JAVA=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DWITH_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=ON -DPYTHON_EXECUTABLE=/data/data/com.termux/files/usr/bin/python3.7m -DPYTHON_INCLUDE_DIR=/data/data/com.termux/files/usr/include/python3.7m -DPYTHON_LIBRARY=/data/data/com.termux/files/usr/lib/libpython3.7m.so -DPYTHON_PACKAGES_PATH=/data/data/com.termux/files/usr/lib/python3.7/site-packages ..
1
LDFLAGS=" -llog -lpython3" cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$PREFIX -DBUILD_opencv_python3=on -DBUILD_opencv_python2=off -DWITH_QT=OFF -DWITH_GTK=OFF -DBUILD_JAVA=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DOPENCV_EXTRA_MODULES_PATH=/data/data/com.termux/files/home/opencv_contrib/modules -DOPENCV_ENABLE_NONFREE:BOOL=ON -DWITH_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF ..

17:20开始make —–20:00

0:37开始make -j8 —–1:16

18:29开始make -j8 ——19:19

卸载,build目录下

make uninstall

安装lxml网上给出了一个新方案,如下

pkg install libxml2 libxslt libiconv clang libzmq libc++ openjpeg libjpeg-turbo libpng cmake pkg-config

pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install -U uiautomator2 -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装opencv

先安装opencv_contrib

git clone https://github.com/opencv/opencv_contrib

LDFLAGS=” -llog -lpython3” cmake -DOPENCV_EXTRA_MODULES_PATH=/data/data/com.termux/files/home/opencv_contrib/modules

–qpython

pip install requests

pip install -U uiautomator2

如果报错

先升级pip

pip install –upgrade pip

pin install clang

libc++ openjpeg libjpeg-turbo libpng cmake pkg-config

感谢以下大神的肩膀:

Termux 高级终端安装使用配置教程